package com.yunke.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.*;
import java.math.BigDecimal;

/**
 * 申请提现DTO
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@Schema(description = "申请提现请求")
public class YunkeWithdrawalDto {

    /**
     * 提现金额
     */
    @NotNull(message = "提现金额不能为空")
    @DecimalMin(value = "1.00", message = "提现金额必须大于1元")
    @DecimalMax(value = "10000.00", message = "单次提现金额不能超过10000元")
    @Schema(description = "提现金额", example = "100.00")
    private BigDecimal amount;

    /**
     * 提现方式：1-微信 2-支付宝 3-银行卡
     */
    @NotNull(message = "提现方式不能为空")
    @Min(value = 1, message = "提现方式值无效")
    @Max(value = 3, message = "提现方式值无效")
    @Schema(description = "提现方式：1-微信 2-支付宝 3-银行卡", example = "1")
    private Integer withdrawalType;

    /**
     * 收款账户
     */
    @NotBlank(message = "收款账户不能为空")
    @Size(max = 100, message = "收款账户长度不能超过100个字符")
    @Schema(description = "收款账户", example = "张三")
    private String account;

    /**
     * 收款人姓名
     */
    @NotBlank(message = "收款人姓名不能为空")
    @Size(max = 50, message = "收款人姓名长度不能超过50个字符")
    @Schema(description = "收款人姓名", example = "张三")
    private String accountName;

    /**
     * 银行名称（银行卡提现时必填）
     */
    @Schema(description = "银行名称", example = "中国工商银行")
    private String bankName;

    /**
     * 银行卡号（银行卡提现时必填）
     */
    @Schema(description = "银行卡号", example = "6222021234567890123")
    private String bankCard;

    /**
     * 支付密码
     */
    @NotBlank(message = "支付密码不能为空")
    @Size(min = 6, max = 20, message = "支付密码长度必须在6-20位之间")
    @Schema(description = "支付密码", example = "123456")
    private String payPassword;
} 